package com.hk.player.core;

import com.zhoug.common.screenrecord.OnRecordVideoListener;
import com.zhoug.player.core.OnTalkListener;

import androidx.annotation.NonNull;

/**
 * @author: zhoug
 * @since: 2025-08-08
 */
public interface IHKPlayerView {
    /**
     * 是否自动隐藏播放按钮
     *
     * @param autoHidePlayBtn true:自动隐藏,false:一直显示.默认:true
     */
    void setAutoHidePlayBtn(boolean autoHidePlayBtn);

    /**
     * 设置播放窗口圆角
     *
     * @param windowCorner >0显示圆角
     */
    void setWindowCorner(int windowCorner);

    /**
     * 是否显示水印
     *
     * @param waterMarkerEnable true:显示水印
     */
    void setWaterMarkerEnable(boolean waterMarkerEnable);

    /**
     * 设置播放按钮点击监听
     *
     * @param onPlayBtnClickListener OnPlayBtnClickListener
     */
    void setOnPlayBtnClickListener(OnPlayBtnClickListener onPlayBtnClickListener);

    /**
     * 设置录像监听
     *
     * @param onRecordVideoListener 像监听
     */
    void setOnRecordVideoListener(OnRecordVideoListener onRecordVideoListener);

    /**
     * 设置静音改变监听器
     *
     * @param onMuteChangeListener 静音改变监听器
     */
    void setOnMuteChangeListener(OnMuteChangeListener onMuteChangeListener);

    /**
     * 设置对讲监听器
     *
     * @param onTalkListener 对讲监听器
     */
    void setOnTalkListener(OnTalkListener onTalkListener);

    /**
     * 设置视频控制组件显示状态改变监听器
     *
     * @param onUiHiddenListener 视频控制组件显示状态改变监听器
     */
    void setOnUiHiddenListener(OnUiHiddenListener onUiHiddenListener);



    /**
     * 设置播放资源
     *
     * @param monitorData {@link MonitorMediaData}
     */
    void setMonitorData(MonitorMediaData monitorData);

    /**
     * 设置当调用{@link  #setMonitorData(MonitorMediaData)}方法播放资源改变时是否停止播放
     * @param autoStopOnMonitorChange true:停止,false:不停止
     */
    void setAutoStopOnMonitorChange(boolean autoStopOnMonitorChange);

    /**
     * 获取播放资源
     *
     * @return
     */
    MonitorMediaData getMonitorData();


    /**
     * 开始播放
     */
    void startPlay();



    /**
     * 暂停播放
     */
    void pausePlay();

    /**
     * 停止播放
     */
    void stopPlay();

    /**
     * 释放播放器资源
     */
    void releasePlayer();

    /**
     * 是否正在播放(已经播放成功且显示了画面)
     *
     * @return 是否正在播放
     */
    boolean isPlaying();

    /**
     * 开始回放
     *
     * @param startTime 回放开始时间
     */
    void startPlayback(long startTime);


    /**
     * 设置播放时间戳
     *
     * @param curTime 播放的时间节点
     */
    void seekTo(long curTime);

    /**
     * 设置静音
     *
     * @param mute true:静音
     */
    void setMute(boolean mute);

    /**
     * 是否是静音
     *
     * @return 是否静音
     */
    boolean isMute();

    /**
     * 截取视频图片
     *
     * @param path 图片保存路径
     * @return 是否成功
     */
    boolean capturePicture(String path);


    /**
     * 开始录像
     *
     * @param path 录像文件保存地址
     */
    void startRecord(@NonNull String path);

    /**
     * 停止录像
     */
    void stopRecord();


    /**
     * 是否正在录像
     *
     * @return 是否正在录像
     */
    boolean isRecording();

    /**
     * 开始对讲
     */
    void startTalk();

    /**
     * 停止对讲
     */
    void stopTalk();


    /**
     * 播放按钮点击事件监听
     */
    interface OnPlayBtnClickListener {
        void onPlayBtnClick(IHKPlayerView playerView, boolean startPlay);
    }

}
